Skip to content

Add ppc64le (IBM POWER) architecture support#2637

Merged
adrianreber merged 12 commits into
openhpc:4.xfrom
VersatusHPC:pr/ppc64le-support
Jul 1, 2026
Merged

Add ppc64le (IBM POWER) architecture support#2637
adrianreber merged 12 commits into
openhpc:4.xfrom
VersatusHPC:pr/ppc64le-support

Conversation

@viniciusferrao

@viniciusferrao viniciusferrao commented Jun 29, 2026

Copy link
Copy Markdown
Contributor

Summary

ppc64le (IBM POWER) architecture enablement for OpenHPC 4.x / EL10. @adrianreber suggested bringing this upstream. Sponsored by VersatusHPC; validated on POWER9 hardware (AlmaLinux 10 and openEuler 24.03).

Restructured per review: one commit per spec file, single-line subjects. The gotcha ccache handling is brought in by cherry-picking the three relevant 2.x commits (git cherry-pick -x), with the ppc64le-specific gotcha change applied on top of them — not folded into a single commit.

Scope

Component specs that needed architecture handling: gotcha, gnu-compilers, boost, fftw, openblas, likwid (+ a perf_event uncore patch), pdtoolkit, numpy, mpich, and the meta-package closure. 11 files.

The GNU compiler POWER9 baseline already landed in OHPC_setup_compiler upstream, so it is no longer part of this PR.

Design

  • All ppc64le-specific changes are gated by %ifarch ppc64le (or %ifnarch … ppc64le in the meta-package), so the existing x86_64 and aarch64 builds are unaffected. For gotcha, rpmspec --parse differs by exactly one line between targets (the ppc64le CMAKE_INSTALL_LIBDIR=lib).
  • The baseline is -mcpu=power9, matching the EL9+ ppc64le distro minimum (redhat-rpm-config's %__cflags_arch_ppc64le) and forward-compatible with POWER10/POWER11.
  • Per-package highlights: openblas TARGET=POWER9, fftw --enable-vsx, boost architecture=power, likwid GCCPOWER + a perf_event uncore patch, pdtoolkit ibm64linux, a numpy VSX3 build fix, gotcha CMAKE_INSTALL_LIBDIR=lib (cmake otherwise defaults to lib64, which breaks the module's lib path — matching the existing scalapack idiom), and the meta-package groups scoped to the MPI families built on POWER (openmpi5).

Verification

Built every touched package from source on both x86_64 and ppc64le (clean containers; AlmaLinux 10 and openEuler 24.03). All compile, with no regression on the existing architectures — the gated hunks are inert off-POWER, confirmed by both rpmspec --parse diffs and real RPM builds. gotcha 1.0.10 (the version this PR cherry-picks from 2.x) builds clean on ppc64le with all 18 ctest cases passing.

Notes

  • Independent of the ucx/hwloc spec fixes at the merge level. A from-source build of the full ppc64le stack also wants the ucx Source0 fix to fetch ucx, but that's a build-time convenience, not a merge dependency.

Sponsored by VersatusHPC.

@github-actions

github-actions Bot commented Jun 29, 2026

Copy link
Copy Markdown

📦 Package Count Analysis Results

Environment: UBI 10 Container
Target Branch: 4.x
Version: OpenHPC 4.x
Overall Status:Analysis completed successfully

🏭 Factory Repositories

Status:Factory repositories analysis completed successfully

Release Base OS aarch64 x86_64 noarch Total
4.2 EL_10 17 29 12 58
4.2 openEuler_24.03 17 19 12 48
Total All 34 48 24 106

Analysis performed by OpenHPC Package Count CI
Commit: 6b7fa191
Workflow: 28473398768

@github-actions

github-actions Bot commented Jun 29, 2026

Copy link
Copy Markdown

📊 Build Order Analysis Results

Environment: AlmaLinux 10 Container
Total Spec Files Analyzed: 89
Status:Build order analysis completed successfully

📋 Build Order Output

📦 Build Order (84 packages)

➕ Show remaining 69 packages

Analysis performed by OpenHPC Build Order CI
Commit: 6b7fa191
Workflow: 28473398751

@adrianreber

Copy link
Copy Markdown
Member

For easier re-use on our different branches it would be good to have one commit for each spec file. Please change that, so that each commit changes only one spec file. The ccache changes in gotcha.spec should also not be part of the same commit. There are three commits on the 2.x branch for gotcha which can be brought to 4.x with git cherry-pick -x. Then apply your changes on top of it.

@viniciusferrao

Copy link
Copy Markdown
Contributor Author

For easier re-use on our different branches it would be good to have one commit for each spec file. Please change that, so that each commit changes only one spec file. The ccache changes in gotcha.spec should also not be part of the same commit. There are three commits on the 2.x branch for gotcha which can be brought to 4.x with git cherry-pick -x. Then apply your changes on top of it.

Alright. I'll look at it.

@github-actions

github-actions Bot commented Jun 30, 2026

Copy link
Copy Markdown

🚀 CCache Statistics

Configuration 🐧 RHEL 🦊 openEuler
🖥️ x86_64 / gnu15 🟡 28.94% 🟡 28.83%
🖥️ x86_64 / intel 🟢 79.13% -
💪 aarch64 / gnu15 🟡 30.92% 🟡 38.03%
📊 Detailed Statistics

openEuler (aarch64)

Cacheable calls:    77344 / 97357 (79.44%)
  Hits:             29411 / 77344 (38.03%)
    Direct:         28147 / 29411 (95.70%)
    Preprocessed:    1264 / 29411 ( 4.30%)
  Misses:           47933 / 77344 (61.97%)
Uncacheable calls:  20013 / 97357 (20.56%)
Local storage:
  Cache size (GiB):   1.6 /   5.0 (32.23%)
  Hits:             29411 / 77344 (38.03%)
  Misses:           47933 / 77344 (61.97%)

openEuler (x86_64)

Cacheable calls:    31863 / 36310 (87.75%)
  Hits:              9187 / 31863 (28.83%)
    Direct:          8989 /  9187 (97.84%)
    Preprocessed:     198 /  9187 ( 2.16%)
  Misses:           22676 / 31863 (71.17%)
Uncacheable calls:   4447 / 36310 (12.25%)
Local storage:
  Cache size (GiB):   0.7 /   5.0 (14.59%)
  Hits:              9187 / 31863 (28.83%)
  Misses:           22676 / 31863 (71.17%)

RHEL (aarch64/gnu15)

Cacheable calls:    80520 / 101697 (79.18%)
  Hits:             24894 /  80520 (30.92%)
    Direct:         23468 /  24894 (94.27%)
    Preprocessed:    1426 /  24894 ( 5.73%)
  Misses:           55626 /  80520 (69.08%)
Uncacheable calls:  21177 / 101697 (20.82%)
Local storage:
  Cache size (GiB):   1.8 /    5.0 (35.15%)
  Hits:             24894 /  80520 (30.92%)
  Misses:           55626 /  80520 (69.08%)

RHEL (x86_64/gnu15)

Cacheable calls:    133872 / 156798 (85.38%)
  Hits:              38739 / 133872 (28.94%)
    Direct:          36974 /  38739 (95.44%)
    Preprocessed:     1765 /  38739 ( 4.56%)
  Misses:            95133 / 133872 (71.06%)
Uncacheable calls:   22926 / 156798 (14.62%)
Local storage:
  Cache size (GiB):    2.5 /    5.0 (49.60%)
  Hits:              38739 / 133872 (28.94%)
  Misses:            95133 / 133872 (71.06%)

RHEL (x86_64/intel)

Cacheable calls:    82849 / 114210 (72.54%)
  Hits:             65561 /  82849 (79.13%)
    Direct:         63647 /  65561 (97.08%)
    Preprocessed:    1914 /  65561 ( 2.92%)
  Misses:           17288 /  82849 (20.87%)
Uncacheable calls:  31361 / 114210 (27.46%)
Local storage:
  Cache size (GiB):   0.9 /    5.0 (17.17%)
  Hits:             65561 /  82849 (79.13%)
  Misses:           17288 /  82849 (20.87%)

🤖 Generated from workflow run 28473398738

@viniciusferrao

Copy link
Copy Markdown
Contributor Author

Hi @adrianreber, PR was amended to have the separate commits per file.

The other issues were also addressed.

Thanks.

@viniciusferrao

Copy link
Copy Markdown
Contributor Author

Those aarch64 failures were unexpected. I will look at it.

@adrianreber

Copy link
Copy Markdown
Member

Those aarch64 failures were unexpected. I will look at it.

Don't worry, this is because of the meta packages for the arm HPC compiler. I know how to fix it.

@github-actions

github-actions Bot commented Jun 30, 2026

Copy link
Copy Markdown

Test Results

111 files  + 82  111 suites  +82   5m 37s ⏱️ + 4m 47s
338 tests +279  332 ✅ +279  5 💤  - 1  1 ❌ +1 
522 runs  +417  516 ✅ +419  5 💤  - 3  1 ❌ +1 

For more details on these failures, see this check.

Results for commit 5e4bd48. ± Comparison against base commit 680abc0.

This pull request removes 3 and adds 282 tests. Note that renamed tests count towards both.
test_harness ‑ [rms-harness] Verify long-running MPI job terminates with timeout parameter (slurm/gnu15/mvapich2)
test_harness ‑ [rms-harness] Verify non-zero exit code from MPI job detected as failure (slurm/gnu15/mvapich2)
test_harness ‑ [rms-harness] Verify zero exit code from MPI job runs OK (slurm/gnu15/mvapich2)
rm_execution ‑ [Boost/Accumulators] max-test under resource manager (slurm/gnu15/mpich)
rm_execution ‑ [Boost/Accumulators] max-test under resource manager (slurm/gnu15/mvapich2)
rm_execution ‑ [Boost/Accumulators] max-test under resource manager (slurm/gnu15/openmpi5)
rm_execution ‑ [Boost/Accumulators] max-test under resource manager (slurm/intel/mpich)
rm_execution ‑ [Boost/Accumulators] max-test under resource manager (slurm/intel/mvapich2)
rm_execution ‑ [Boost/Accumulators] max-test under resource manager (slurm/intel/openmpi5)
rm_execution ‑ [Boost/Accumulators] min-test under resource manager (slurm/gnu15/mpich)
rm_execution ‑ [Boost/Accumulators] min-test under resource manager (slurm/gnu15/mvapich2)
rm_execution ‑ [Boost/Accumulators] min-test under resource manager (slurm/gnu15/openmpi5)
rm_execution ‑ [Boost/Accumulators] min-test under resource manager (slurm/intel/mpich)
…

♻️ This comment has been updated with latest results.

@adrianreber

Copy link
Copy Markdown
Member

Please rebase. That should solve the problems.

@adrianreber

Copy link
Copy Markdown
Member

I see you make mpich on ppc64le depend on hwloc from OpenHPC. Any reason for that?

@viniciusferrao

Copy link
Copy Markdown
Contributor Author

I see you make mpich on ppc64le depend on hwloc from OpenHPC. Any reason for that?

I tough that was the correct thing to do since OpenHPC ships hwloc. Should it depends on the distro hwloc?

@adrianreber

Copy link
Copy Markdown
Member

I see you make mpich on ppc64le depend on hwloc from OpenHPC. Any reason for that?

I tough that was the correct thing to do since OpenHPC ships hwloc. Should it depends on the distro hwloc?

Probably correct. But then we should do it for all architectures. Let's leave this PR for now. It is already large enough. But maybe something for a future change.

@viniciusferrao

Copy link
Copy Markdown
Contributor Author

I see you make mpich on ppc64le depend on hwloc from OpenHPC. Any reason for that?

I tough that was the correct thing to do since OpenHPC ships hwloc. Should it depends on the distro hwloc?

Probably correct. But then we should do it for all architectures. Let's leave this PR for now. It is already large enough. But maybe something for a future change.

Ok. I can remove that and we do afterwards.

@viniciusferrao

Copy link
Copy Markdown
Contributor Author

Done @adrianreber

I'm still running tests here. Recompiling everything takes a while.

@adrianreber

Copy link
Copy Markdown
Member

Sorry, but this needs another rebase. There were still things missing from other branches.

@viniciusferrao

Copy link
Copy Markdown
Contributor Author

Sorry, but this needs another rebase. There were still things missing from other branches.

Yeah, I was looking at it. There was permission errors in the CI. Let me fix.

adrianreber and others added 9 commits June 30, 2026 17:22
Signed-off-by: Adrian Reber <areber@redhat.com>
(cherry picked from commit b4591a8)
- gotcha: 1.0.8 -> 1.0.10
  upstream: llnl/gotcha

Command: `misc/check_for_package_updates.py -v -o markdown gotcha
  --update`

Signed-off-by: Adrian Reber <areber@redhat.com>
(cherry picked from commit e0a7b0b)
Signed-off-by: Adrian Reber <areber@redhat.com>
(cherry picked from commit abff307)
Sponsored-by: VersatusHPC
Signed-off-by: Vinícius Ferrão <ferrao@versatushpc.com.br>
Sponsored-by: VersatusHPC
Signed-off-by: Vinícius Ferrão <ferrao@versatushpc.com.br>
Sponsored-by: VersatusHPC
Signed-off-by: Vinícius Ferrão <ferrao@versatushpc.com.br>
Sponsored-by: VersatusHPC
Signed-off-by: Vinícius Ferrão <ferrao@versatushpc.com.br>
Sponsored-by: VersatusHPC
Signed-off-by: Vinícius Ferrão <ferrao@versatushpc.com.br>
Sponsored-by: VersatusHPC
Signed-off-by: Vinícius Ferrão <ferrao@versatushpc.com.br>
Sponsored-by: VersatusHPC
Signed-off-by: Vinícius Ferrão <ferrao@versatushpc.com.br>
Sponsored-by: VersatusHPC
Signed-off-by: Vinícius Ferrão <ferrao@versatushpc.com.br>
Sponsored-by: VersatusHPC
Signed-off-by: Vinícius Ferrão <ferrao@versatushpc.com.br>
@adrianreber adrianreber merged commit ba5eef8 into openhpc:4.x Jul 1, 2026
24 of 27 checks passed
@adrianreber

Copy link
Copy Markdown
Member

I merged this for now. For further changes please try to do smaller PRs for easier testing of the changes.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants